<!DOCTYPE html>
<html lang="en" class="js csstransforms3d">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta name="generator" content="Hugo 0.85.0" />
    <meta name="description" content="">


    <link rel="shortcut icon" href="../images/favicon.png" type="image/x-icon" />
<link rel="icon" href="../images/favicon.png" type="image/x-icon" />

    <title>Drawing :: Mesen Documentation</title>
    
    
    <link href="../css/nucleus.css?1626403088" rel="stylesheet">
    <link href="../css/font-awesome.min.css?1626403088" rel="stylesheet">
    <link href="../css/hybrid.css?1626403088" rel="stylesheet">
    <link href="../css/featherlight.min.css?1626403088" rel="stylesheet">
    <link href="../css/perfect-scrollbar.min.css?1626403088" rel="stylesheet">
    <link href="../css/horsey.css?1626403088" rel="stylesheet">
    <link href="../css/theme.css?1626403088" rel="stylesheet">
    <link href="../css/hugo-theme.css?1626403088" rel="stylesheet">
	<link href="../css/custom.css?1626403088" rel="stylesheet">
    
      <link href="../css/theme-green.css?1626403088" rel="stylesheet">
    

    <script src="../js/jquery-2.x.min.js?1626403088"></script>
    
    <style type="text/css">
      :root #header + #content > #left > #rlblock_left{ 
          display:none !important;
      }
      
    </style>
    
  </head>
  <body class="" data-url="../apireference/drawing.html">
    <nav id="sidebar" class="">



  <div id="header-wrapper">
    <div id="header">
      <a id="logo" href="../index.html">
	<img src="../images/MesenIcon.png" />
</a>

    </div>
    
        <div class="searchbox">
    <label for="search-by"><i class="fa fa-search"></i></label>
    <input data-search-input id="search-by" type="text" placeholder="Search...">
    <span data-search-clear=""><i class="fa fa-close"></i></span>
</div>

<script type="text/javascript" src="../js/lunr.min.js?1626403088"></script>
<script type="text/javascript" src="../js/horsey.js?1626403088"></script>
<script type="text/javascript">
    
        var baseurl = "";
    
	
</script>
<script type="text/javascript" src="../js/searchjson.js?1626403088"></script>
<script type="text/javascript" src="../js/search.js?1626403088"></script>

    
  </div>

    <div class="highlightable">
    <ul class="topics">
        
          
          


 
  
    
    <li data-nav-id="/gettingstarted.html" title="Getting Started" class="dd-item 
        
        
        
        ">
      <a href="../gettingstarted.html">
          Getting Started
          
      </a>
      
              
    </li>
  
 

          
          


 
  
    
    <li data-nav-id="/configuration.html" title="Configuration" class="dd-item 
        
        
        
        ">
      <a href="../configuration.html">
          Configuration
          
      </a>
      
      
        <ul>
          
          
          
          
        
          
            
            


 
  
    
      <li data-nav-id="/configuration/audio.html" title="Audio Options" class="dd-item ">
        <a href="../configuration/audio.html">
        Audio Options
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/configuration/input.html" title="Input Options" class="dd-item ">
        <a href="../configuration/input.html">
        Input Options
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/configuration/video.html" title="Video Options" class="dd-item ">
        <a href="../configuration/video.html">
        Video Options
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/configuration/emulation.html" title="Emulation Options" class="dd-item ">
        <a href="../configuration/emulation.html">
        Emulation Options
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/configuration/preferences.html" title="Preferences" class="dd-item ">
        <a href="../configuration/preferences.html">
        Preferences
        
        </a>
    </li>
     
  
 

            
          
        
        </ul>
              
    </li>
  
 

          
          


 
  
    
    <li data-nav-id="/tools.html" title="Tools" class="dd-item 
        
        
        
        ">
      <a href="../tools.html">
          Tools
          
      </a>
      
              
    </li>
  
 

          
          


 
  
    
    <li data-nav-id="/debugging.html" title="Debugging Tools" class="dd-item 
        
        
        
        ">
      <a href="../debugging.html">
          Debugging Tools
          
      </a>
      
      
        <ul>
          
          
          
          
        
          
            
            


 
  
    
      <li data-nav-id="/debugging/debugger.html" title="Debugger" class="dd-item ">
        <a href="../debugging/debugger.html">
        Debugger
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/debugging/apuviewer.html" title="APU Viewer" class="dd-item ">
        <a href="../debugging/apuviewer.html">
        APU Viewer
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/debugging/assembler.html" title="Assembler" class="dd-item ">
        <a href="../debugging/assembler.html">
        Assembler
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/debugging/eventviewer.html" title="Event Viewer" class="dd-item ">
        <a href="../debugging/eventviewer.html">
        Event Viewer
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/debugging/memorytools.html" title="Memory Tools" class="dd-item ">
        <a href="../debugging/memorytools.html">
        Memory Tools
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/debugging/performanceprofiler.html" title="Performance Profiler" class="dd-item ">
        <a href="../debugging/performanceprofiler.html">
        Performance Profiler
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/debugging/ppuviewer.html" title="PPU Viewer" class="dd-item ">
        <a href="../debugging/ppuviewer.html">
        PPU Viewer
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/debugging/scriptwindow.html" title="Script Window" class="dd-item ">
        <a href="../debugging/scriptwindow.html">
        Script Window
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/debugging/texthooker.html" title="Text Hooker" class="dd-item ">
        <a href="../debugging/texthooker.html">
        Text Hooker
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/debugging/tracelogger.html" title="Trace Logger" class="dd-item ">
        <a href="../debugging/tracelogger.html">
        Trace Logger
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/debugging/debuggerintegration.html" title="Integration with compilers" class="dd-item ">
        <a href="../debugging/debuggerintegration.html">
        Integration with compilers
        
        </a>
    </li>
     
  
 

            
          
        
        </ul>
              
    </li>
  
 

          
          


 
  
    
    <li data-nav-id="/hdpacks.html" title="HD Packs" class="dd-item 
        
        
        
        ">
      <a href="../hdpacks.html">
          HD Packs
          
      </a>
      
              
    </li>
  
 

          
          


 
  
    
    <li data-nav-id="/apireference.html" title="Lua API reference" class="dd-item 
        parent
        
        
        ">
      <a href="../apireference.html">
          Lua API reference
          
      </a>
      
      
        <ul>
          
          
          
          
        
          
            
            


 
  
    
      <li data-nav-id="/apireference/changelog.html" title="Changelog" class="dd-item ">
        <a href="../apireference/changelog.html">
        Changelog
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/apireference/callbacks.html" title="Callbacks" class="dd-item ">
        <a href="../apireference/callbacks.html">
        Callbacks
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/apireference/drawing.html" title="Drawing" class="dd-item active">
        <a href="../apireference/drawing.html">
        Drawing
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/apireference/emulation.html" title="Emulation" class="dd-item ">
        <a href="../apireference/emulation.html">
        Emulation
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/apireference/input.html" title="Input" class="dd-item ">
        <a href="../apireference/input.html">
        Input
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/apireference/logging.html" title="Logging" class="dd-item ">
        <a href="../apireference/logging.html">
        Logging
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/apireference/memoryaccess.html" title="Memory Access" class="dd-item ">
        <a href="../apireference/memoryaccess.html">
        Memory Access
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/apireference/misc.html" title="Miscellaneous" class="dd-item ">
        <a href="../apireference/misc.html">
        Miscellaneous
        
        </a>
    </li>
     
  
 

            
          
            
            


 
  
    
      <li data-nav-id="/apireference/enums.html" title="Enums" class="dd-item ">
        <a href="../apireference/enums.html">
        Enums
        
        </a>
    </li>
     
  
 

            
          
        
        </ul>
              
    </li>
  
 

          
         
    </ul>

    
    
      <section id="shortcuts">
        <h3>More</h3>
        <ul>
          
              <li class="" role=""> 
                  <a class="padding" href="https://www.mesen.ca"><img style='vertical-align: middle' src='../images/favicon.png'/> <span style='display: inline;vertical-align: middle'>Website</span></a>
              </li>
          
              <li class="" role=""> 
                  <a class="padding" href="https://github.com/SourMesen/Mesen"><i class='fa fa-github'></i> GitHub</a>
              </li>
          
        </ul>
      </section>
    

    
	<div id="menuspacer"></div>
    <section id="footer">
      <div class="menuFooter">
	<div class="donateButton"><a href="https://www.mesen.ca/Donate.php"><img src="../images/patreon.png" alt="Become a Patron!" width="66%" height="66%"></a></div>
	<div class="donateButton"><a class="bmc-button" target="_blank" href="https://www.mesen.ca/BuyCoffee.php"><img src="../images/BMC-btn-logo.svg" alt="Donate"><span style="margin-left:5px">Donate</span></a></div>
	Version: <b>0.9.9</b><br/>
	Last Updated: <b>2021-07-16</b>
</div>

    </section>
  </div>
</nav>





        <section id="body">
        <div id="overlay"></div>
        <div class="padding highlightable sticky-parent">
              
              <div class="sticky-spacer">
                <div id="top-bar">
                
                
                <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
                    <span id="sidebar-toggle-span">
                        <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
                          <i class="fa fa-bars"></i>
                        </a>
                    </span>
                  
                  <span id="toc-menu"><i class="fa fa-list-alt"></i></span>
                  
                  <span class="links">
                    
          
          
            
            
          
          
            
            
          
          
            <a href='../'>Home</a> > <a href='../apireference.html'>Lua API reference</a> > Drawing
          
         
          
         
          
           
                  </span>
                </div>
                
                    <div class="progress">
    <div class="wrapper">
<nav id="TableOfContents">
  <ul>
    <li><a href="#drawing-basics">Drawing basics</a></li>
    <li><a href="#drawpixel">drawPixel</a></li>
    <li><a href="#drawline">drawLine</a></li>
    <li><a href="#drawrectangle">drawRectangle</a></li>
    <li><a href="#drawstring">drawString</a></li>
    <li><a href="#clearscreen">clearScreen</a></li>
    <li><a href="#getpixel">getPixel</a></li>
    <li><a href="#getscreenbuffer">getScreenBuffer</a></li>
    <li><a href="#setscreenbuffer">setScreenBuffer</a></li>
  </ul>
</nav>
    </div>
</div>

                
              </div>
            </div>
            

        
        <div id="body-inner">
          
            <h1>Drawing</h1>
          

        



<div class="toc">
	<div><nav id="TableOfContents">
  <ul>
    <li><a href="#drawing-basics">Drawing basics</a></li>
    <li><a href="#drawpixel">drawPixel</a></li>
    <li><a href="#drawline">drawLine</a></li>
    <li><a href="#drawrectangle">drawRectangle</a></li>
    <li><a href="#drawstring">drawString</a></li>
    <li><a href="#clearscreen">clearScreen</a></li>
    <li><a href="#getpixel">getPixel</a></li>
    <li><a href="#getscreenbuffer">getScreenBuffer</a></li>
    <li><a href="#setscreenbuffer">setScreenBuffer</a></li>
  </ul>
</nav></div>
</div>
 
 

<h2 id="drawing-basics">Drawing basics</h2>
<p>All drawing-related functions share a few properties:</p>
<ul>
<li>
<p>(x, y) coordinates must be between (0, 0) and (255, 239)</p>
</li>
<li>
<p>The &ldquo;duration&rdquo; is specified as a number of frames during which the drawing must remain on the screen. This defaults to 1 frame when unspecified, and draw calls will be permanent (until a call to <a href="#clearscreen">clearScreen</a>) if duration is set to 0.</p>
</li>
<li>
<p>Colors are integers in ARGB format:</p>
<p>White: 0xFFFFFF
Black: 0x000000
Red: 0xFF0000
Green: 0x00FF00
Blue: 0x0000FF</p>
<p>The alpha component (transparency) can be used and defaults to being fully opaque when set to 0 or omitted. (0xFF is fully transparent)
e.g: 
semi-transparent black: 0x7F000000
opaque gray: 0xFF888888 (fully transparent gray color)</p>
</li>
</ul>
<h2 id="drawpixel">drawPixel</h2>
<p><strong>Syntax</strong></p>
<pre><code>emu.drawPixel(x, y, color [, duration, delay])
</code></pre>
<p><strong>Parameters</strong><br>
x - <em>Integer</em> X position<br>
y - <em>Integer</em> Y position <br>
color - <em>Integer</em> Color<br>
duration - <em>Integer</em> Number of frames to display (Default: 1 frame)<br>
delay - <em>Integer</em> Number of frames to wait before drawing the pixel (Default: 0 frames)</p>
<p><strong>Return value</strong><br>
<em>None</em></p>
<p><strong>Description</strong><br>
Draws a pixel at the specified (x, y) coordinates using the specified color for a specific number of frames.</p>
<h2 id="drawline">drawLine</h2>
<p><strong>Syntax</strong></p>
<pre><code>emu.drawLine(x, y, x2, y2, color [, duration, delay])
</code></pre>
<p><strong>Parameters</strong><br>
x - <em>Integer</em> X position (start of line)<br>
y - <em>Integer</em> Y position (start of line)<br>
x2 - <em>Integer</em> X position (end of line)<br>
y2 - <em>Integer</em> Y position (end of line)<br>
color - <em>Integer</em> Color<br>
duration - <em>Integer</em> Number of frames to display (Default: 1 frame)<br>
delay - <em>Integer</em> Number of frames to wait before drawing the line (Default: 0 frames)</p>
<p><strong>Return value</strong><br>
<em>None</em></p>
<p><strong>Description</strong><br>
Draws a line between (x, y) to (x2, y2) using the specified color for a specific number of frames.</p>
<h2 id="drawrectangle">drawRectangle</h2>
<p><strong>Syntax</strong></p>
<pre><code>emu.drawRectangle(x, y, width, height, color, fill [, duration, delay])
</code></pre>
<p><strong>Parameters</strong><br>
x - <em>Integer</em> X position<br>
y - <em>Integer</em> Y position
width - <em>Integer</em> The rectangle&rsquo;s width<br>
height - <em>Integer</em> The rectangle&rsquo;s height<br>
color - <em>Integer</em> Color<br>
fill - <em>Boolean</em> Whether or not to draw an outline, or a filled rectangle.<br>
duration - <em>Integer</em> Number of frames to display (Default: 1 frame)<br>
delay - <em>Integer</em> Number of frames to wait before drawing the rectangle (Default: 0 frames)</p>
<p><strong>Return value</strong><br>
<em>None</em></p>
<p><strong>Description</strong><br>
Draws a rectangle between (x, y) to (x+width, y+height) using the specified color for a specific number of frames.<br>
If <em>fill</em> is false, only the rectangle&rsquo;s outline will be drawn.</p>
<h2 id="drawstring">drawString</h2>
<p><strong>Syntax</strong></p>
<pre><code>emu.drawString(x, y, text, textColor, backgroundColor [, duration, delay])
</code></pre>
<p><strong>Parameters</strong><br>
x - <em>Integer</em> X position<br>
y - <em>Integer</em> Y position<br>
text- <em>String</em> The text to display<br>
textColor - <em>Integer</em> Color to use for the text<br>
backgroundColor - <em>Integer</em> Color to use for the text&rsquo;s background color<br>
duration - <em>Integer</em> Number of frames to display (Default: 1 frame)<br>
delay - <em>Integer</em> Number of frames to wait before drawing the text (Default: 0 frames)</p>
<p><strong>Return value</strong><br>
<em>None</em></p>
<p><strong>Description</strong><br>
Draws text at (x, y) using the specified text and colors for a specific number of frames.</p>
<h2 id="clearscreen">clearScreen</h2>
<p><strong>Syntax</strong></p>
<pre><code>emu.clearScreen()
</code></pre>
<p><strong>Return value</strong><br>
<em>None</em></p>
<p><strong>Description</strong><br>
Removes all drawings from the screen.</p>
<h2 id="getpixel">getPixel</h2>
<p><strong>Syntax</strong></p>
<pre><code>emu.getPixel(x, y)
</code></pre>
<p><strong>Parameters</strong><br>
x - <em>Integer</em> X position<br>
y - <em>Integer</em> Y position</p>
<p><strong>Return value</strong><br>
<em>Integer</em> ARGB color</p>
<p><strong>Description</strong><br>
Returns the color (in ARGB format) of the PPU&rsquo;s output for the specified location.</p>
<h2 id="getscreenbuffer">getScreenBuffer</h2>
<p><strong>Syntax</strong></p>
<pre><code>emu.getScreenBuffer()
</code></pre>
<p><strong>Return value</strong><br>
<em>Array</em> 32-bit integers in ARGB format</p>
<p><strong>Description</strong><br>
Returns an array of ARGB values for the entire screen (256px by 240px) - can be used with <a href="#setscreenbuffer">emu.setScreenBuffer()</a> to alter the frame.</p>
<h2 id="setscreenbuffer">setScreenBuffer</h2>
<p><strong>Syntax</strong></p>
<pre><code>emu.setScreenBuffer(screenBuffer)
</code></pre>
<p><strong>Parameters</strong><br>
screenBuffer - <em>Array</em> An array of 32-bit integers in ARGB format</p>
<p><strong>Return value</strong><br>
<em>None</em></p>
<p><strong>Description</strong><br>
Replaces the current frame with the contents of the specified array.</p>


<footer class=" footline" >
	
</footer>


        
        </div> 
      </div>

    <div id="navigation">
        
        
        
        
            
            
                
                    
                    
                
                

                    
                    
                        
                    
                    

                    
                        
            
            
                
                    
                        
                        
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                        
                        
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
                        
            
            
                
                    
                
                

                    
                    
                    

                    
            
        
                    
            
        
                    
            
        
        
        


        
            <a class="nav nav-prev" href="../apireference/callbacks.html" title="Callbacks"> <i class="fa fa-chevron-left"></i></a>
        
        
            <a class="nav nav-next" href="../apireference/emulation.html" title="Emulation" style="margin-right: 0px;"><i class="fa fa-chevron-right"></i></a>
        
    </div>

    </section>
    
    <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
      <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
    </div>
    <script src="../js/clipboard.min.js?1626403088"></script>
    <script src="../js/perfect-scrollbar.min.js?1626403088"></script>
    <script src="../js/perfect-scrollbar.jquery.min.js?1626403088"></script>
    <script src="../js/jquery.sticky-kit.min.js?1626403088"></script>
    <script src="../js/featherlight.min.js?1626403088"></script>
    <script src="../js/html5shiv-printshiv.min.js?1626403088"></script>
    <script src="../js/highlight.pack.js?1626403088"></script>
    <script>hljs.initHighlightingOnLoad();</script>
    <script src="../js/modernizr.custom.71422.js?1626403088"></script>
    <script src="../js/learn.js?1626403088"></script>
    <script src="../js/hugo-learn.js?1626403088"></script>

    <link href="../mermaid/mermaid.css?1626403088" type="text/css" rel="stylesheet" />
    <script src="../mermaid/mermaid.js?1626403088"></script>
    <script>
        mermaid.initialize({ startOnLoad: true });
    </script>
    

  </body>
</html>

